package main

import (
	"fmt"

	"gorm.io/driver/mysql"
	"gorm.io/gorm"
)

var DB *gorm.DB
var err error

type User struct {
	ID       uint `gorm:"primaryKey"`
	Name     string
	Email    string
	Password string
}

func main() {
	dsn := "root:123456@tcp(localhost:3306)/testdb?charset=utf8mb4&parseTime=True&loc=Local"
	DB, err = gorm.Open(mysql.Open(dsn), &gorm.Config{})
	if err != nil {
		fmt.Println("连接数据库失败，请检查参数：", err)
		return
	}
	fmt.Println("连接数据库成功！")

	// 自动迁移，创建表
	err = DB.AutoMigrate(&User{})
	if err != nil {
		fmt.Println("自动迁移失败：", err)
		return
	}
	fmt.Println("自动迁移成功！")

	// 创建用户
	user := User{Name: "张三", Email: "zhangsan@example.com", Password: "password123"}
	result := DB.Create(&user)
	if result.Error != nil {
		fmt.Println("创建用户失败：", result.Error)
		return
	}
	fmt.Println("创建用户成功！ID：", user.ID)

	// 查询用户
	var queryUser User
	DB.First(&queryUser, user.ID)
	fmt.Println("查询到的用户：", queryUser)

	// 更新用户邮箱
	DB.Model(&user).Update("Email", "newemail@example.com")
	fmt.Println("更新后的用户：", user)

	// 删除用户
	DB.Delete(&user)
	fmt.Println("用户已删除")
}
